package com.dkm.orproject.dkmoa.service.serviceimpl;

import com.dkm.orproject.dkmoa.dao.OaDataDictionaryMapper;
import com.dkm.orproject.dkmoa.domain.OaDataDictionary;
import com.dkm.orproject.dkmoa.service.OaDataDictionaryService;
import com.dkm.orproject.utils.utils.IdToobtainUtils;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * @ClassName : OaDataDictionaryServiceImpl  //类名
 * @Description : 数据字典服务实现类  //描述
 * @Author : 易嵘  //作者
 * @Date: 2020-08-05 14:07  //时间
 */
@Service
@Transactional(rollbackFor = Exception.class)
public class OaDataDictionaryServiceImpl implements OaDataDictionaryService {
    /**
     * 数据字典dao
     */
    @Resource
    OaDataDictionaryMapper dataDictionaryMapper;

    /**
     * id生成器
     */
    @Resource
    IdToobtainUtils idToobtainUtils;

    /**
     *  分页查询
     * @param dataDictionary 数据字典模型
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param page 当前页数
     * @param limit 显示行数
     * @return 数据字典集
     */
    @Override
    public List<OaDataDictionary> findAll(OaDataDictionary dataDictionary, String startTime, String endTime, Integer page, Integer limit) {
        PageHelper.startPage(page,limit);
        return dataDictionaryMapper.findAll(dataDictionary,startTime,endTime);
    }

    /**
     *  总行数
     * @param dataDictionary 数据字典模型
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 总行数
     */
    @Override
    public Long rowCount(OaDataDictionary dataDictionary, String startTime, String endTime) {
        return dataDictionaryMapper.rowCount(dataDictionary,startTime,endTime);
    }

    /**
     * 新增
     * @param dataDictionary 数据字典模型
     * @param personnelName 登陆人名称
     * @return 回调函数
     */
    @Override
    public int add(OaDataDictionary dataDictionary, String personnelName) {
        dataDictionary.setPkDataDictionaryId(idToobtainUtils.getNumberId()); // id
        dataDictionary.setCreatedBy(personnelName); // 登陆人名称
        dataDictionary.setIsRevision("1"); // 设置有效性
        return dataDictionaryMapper.insertSelective(dataDictionary);
    }

    /**
     * 修改
     * @param dataDictionary 数据字典模型
     * @param personnelName 登陆人名称
     * @return 回调函数
     */
    @Override
    public int update(OaDataDictionary dataDictionary, String personnelName) {
        dataDictionary.setUpdatedBy(personnelName);
        dataDictionary.setUpdatedTime(new Date());
        return dataDictionaryMapper.updateByPrimaryKeySelective(dataDictionary);
    }

    /**
     * 多id查询
     * @param list id集
     * @return 数据字典集
     */
    @Override
    public List<OaDataDictionary> selectAll(List<Long> list) {
        return dataDictionaryMapper.selectAll(list);
    }

    /**
     * 批量删除
     * @param list id集
     * @return 回调函数
     */
    @Override
    public int deleteAll(List<Long> list) {
        return dataDictionaryMapper.deleteAll(list);
    }

    /**
     * id查询
     * @param id 数据字典id
     * @return 数据字典
     */
    @Override
    public OaDataDictionary findById(Long id) {
        return dataDictionaryMapper.selectByPrimaryKey(id);
    }

    /**
     * id删除
     * @param id 数据字典id
     * @return 回调函数
     */
    @Override
    public int deleteById(Long id) {
        return dataDictionaryMapper.deleteByPrimaryKey(id);
    }

    /**
     * 关键字查询
     * @param key 数据字典关键字
     * @return 数据字典集
     */
    @Override
    public List<OaDataDictionary> findKeyword(String key) {
        return dataDictionaryMapper.findKeyword(key);
    }
}
